﻿--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------store procedure---------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
--ĐĂNG NHẬP--
CREATE proc sp_DangNhap
@Ten varchar(10),@MatKhau varchar(10)
as
	if  not exists (Select * from NGUOIDUNG where TenDangNhap=@Ten and MatKhau=@MatKhau)
	begin
		raiserror (N'Tên đăng nhập hoặc mật khẩu không đúng',16,1)
		return
	end
	select Quyen from NGUOIDUNG where TenDangNhap=@Ten and MatKhau=@MatKhau

GO
--------------------------------------------------------------------------------------------------------------------------------
--Load cbViTri--
create proc sp_ViTri
as
	select * from VITRI
GO
--------------------------------------------------------------------------------------------------------------------------------
--Load cbTrangThai
create proc sp_TrangThai
as
	select * from TRANGTHAI
GO
--------------------------------------------------------------------------------------------------------------------------------
--Load cbPhongBan
create proc sp_PhongBan
as
	select * from PHONGBAN
GO
--------------------------------------------------------------------------------------------------------------------------------
--Load danh sach nhan vien
create  proc sp_DanhSachNhanVien
as
	select MaNhanVien,TenNhanVien,DiaChi,DienThoai,NgaySinh,Email,Phai,PassWord,TenViTri,TenTrangThai,TenPhongBan,TaiKhoanNganHang
	from NHANVIEN nv,PHONGBAN p, TRANGTHAI t,VITRI vt
	where   nv.MaPhongBan=p.MaPhongBan and nv.MaViTri=vt.MaViTri 
		and nv.MaTrangThai=t.MaTrangThai 
go
--------------------------------------------------------------------------------------------------------------------------------
--Them NhanVien
create  proc sp_ThemNhanVien
@tennv nvarchar(50),
@diachi nvarchar(50),
@dienthoai nvarchar(12),
@ngaysinh smalldatetime,
@email nvarchar(20),
@phai nvarchar(3),
@pass nvarchar(20),
@taikhoan nvarchar(20),
@mavitri int,
@trangthai smallint,
@phong int
as 
	declare @ma varchar(10), @i int
	set @i = 1
	set @ma = 'B5-001'
	while  exists (select * from NHANVIEN where MaNhanVien = @ma)
	Begin
		if(@i >= 99)
		Begin
			set @i = @i + 1
			set @ma = 'B5-'+convert(varchar(10),@i)
		End	
		else if(@i >= 9 and @i < 99 )
		Begin
			set @i = @i + 1
			set @ma = 'B5-0'+convert(varchar(10),@i)
		End
		else if(@i < 9)
		Begin
			set @i = @i + 1
			set @ma = 'B5-00'+convert(varchar(10),@i)
		End
	End
	if exists (select * from NHANVIEN 
					where TenNhanVien=@tennv and DienThoai=@dienthoai and NgaySinh=@ngaysinh and TaiKhoanNganHang=@taikhoan)
		raiserror (N'Nhân viên này đã tồn tại trong CSDL',16,1 )
	else
		if(@tennv=''or @ngaysinh=''or @dienthoai=''or @email=''or @phai='')
			raiserror (N'chưa nhập đủ thông tin nhân viên',16,1 )
		else
		insert into NHANVIEN values(@ma,@tennv,@diachi,@dienthoai,@ngaysinh,@email,@phai,@pass,@taikhoan,@mavitri,@trangthai,@phong)
		
go
--select * from nhanvien
--------------------------------------------------------------------------------------------------------------------------------
--Cập nhật nhân viên

create proc sp_CapNhatNhanVien
@manv varchar(10),
@tennv nvarchar(50),
@diachi nvarchar(50),
@dienthoai nvarchar(12),
@ngaysinh smalldatetime,
@email nvarchar(20),
@phai nvarchar(3),
@pass nvarchar(20),
@taikhoan nvarchar(20),
@mavitri int,
@trangthai smallint,
@phong int
as
	if exists (select * from NHANVIEN 
					where TenNhanVien=@tennv and DienThoai=@dienthoai and NgaySinh=@ngaysinh and TaiKhoanNganHang=@taikhoan)
		raiserror (N'trùng với thông tin nhân viên khác, hãy kiểm tra lại!',16,1 )
	else
		if(@tennv=''or @ngaysinh=''or @dienthoai=''or @email=''or @phai='')
			raiserror (N'chưa cập nhật đủ thông tin nhân viên',16,1 )
		else 
			update NHANVIEN 
			set TenNhanVien=@tennv,DiaChi=@diachi,DienThoai=@dienthoai, NgaySinh=@ngaysinh,Email=@email,Phai=@phai,PassWord=@pass,TaiKhoanNganHang=@taikhoan,MaViTri=@mavitri,MaPhongBan=@phong,MaTrangThai=@trangthai
			where MaNhanVien=@manv	
go
--------------------------------------------------------------------------------------------------------------------------------
--Chi tiết 1 nhân viên
create proc spChiTietMotNhanVien
@MaNhanVien varchar(10)
as
	select * from NHANVIEN where MaNhanVien=@MaNhanVien
GO
--------------------------------------------------------------------------------------------------------------------------------
--thêm thân nhân
create proc sp_ThemThanNhan
@manv varchar(10),
@tentn nvarchar(30),
@ngaysinh smalldatetime,
@phai nvarchar(3)
as
	if exists (select * from THANNHAN
					where TenThanNhan=@tentn and NgaySinh=@ngaysinh and Phai=@phai)
		raiserror (N'trùng với thông tin thân nhân khác,hãy kiểm tra lại!',16,1 )
	else
		if(@tentn=''or @ngaysinh=''or @phai='')
			raiserror (N'chưa nhập đủ thông tin thân nhân của nhân viên',16,1 )
		else 
			insert into THANNHAN values(@tentn,@ngaysinh,@phai,@manv)
go
--------------------------------------------------------------------------------------------------------------------------------
--Cap nhat than nhan
create proc sp_CapNhatThanNhan
@manv varchar(10),
@matn int,
@tentn nvarchar(30),
@ngaysinh smalldatetime,
@phai nvarchar(3)
as
	if exists (select * from THANNHAN
					where TenThanNhan=@tentn and NgaySinh=@ngaysinh and Phai=@phai)
		raiserror (N'trùng với thông tin thân nhân khác,hãy kiểm tra lại!',16,1 )
	else
		if(@tentn=''or @ngaysinh=''or @phai='')
			raiserror (N'chưa cập nhật đủ thông tin thân nhân của nhân viên',16,1 )
		else 
			update THANNHAN 
			set TenThanNhan=@tentn, NgaySinh=@ngaysinh, Phai=@phai
			where MaNhanVien=@manv and MaThanNhan=@matn
go
--------------------------------------------------------------------------------------------------------------------------------
--Xoa than nhan cua nv
create proc sp_XoaThanNhan
@matn int
as
	delete from THANNHAN where MaThanNhan=@matn
go
--------------------------------------------------------------------------------------------------------------------------------
--xem danh sach than nhan cua 1 nhan vien
create  proc sp_DanhSachThanNhan
@manv varchar(10)
as
	select tn.MaThanNhan, tn.TenThanNhan, tn.Phai,tn.NgaySinh,nv.TenNhanVien
	from NHANVIEN nv join THANNHAN tn on nv.MaNhanVien=tn.MaNhanVien
	where tn.MaNhanVien=@manv
GO
